Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Вивід інформації на семисегментні елементи, що працюють в режимі динамічної індикації

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
ЗІ
Кафедра:
Кафедра КСА

Інформація про роботу

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування
Група:
СІ-21

Частина тексту файла

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра КСА Звіт до лабораторної роботи №3 на тему «Вивід інформації на семисегментні елементи, що працюють в режимі динамічної індикації» з предмету «Програмування мікроконтролерів систем автоматики» Варіант № 3 Львів 2015 Мета роботи: ознайомитися з принципами виводу інформації на семи- сегментні дисплеї у режимі динамічної індикації. Короткі теоретичні відомості Семисегментний графічний індикатор складається зі світлодіодних сегментів. Засвічуючи певні сегменти, можемо вивести необхідне число. Семисегментні індикатори є зі спільним анодом (+) та спільним катодом (–). Це означає, що у такому індикаторі в усіх сегментах один з виводів об’єднаний з рештою подібних виводів інших сегментів. І тоді на спільний вивід подається або високий рівень напруги (+), або низький (–), у залежності від конструкції вибраного індикатора. На решта виводів подають протилежні за рівнем напруги для засвічування сегментів. Розглянемо індикатор зі спільним анодом. На спільний вивід подаємо високий рівень рівень, а для засвічування сегментів необхідно з МК подавати низькі рівні. На рис. 1 зображено вигляд індикатора з прийнятою літерною нумерацією сегментів, та наведена таблиця з відповідними кодами, які необхідно подати на індикатор, щоб засвітилася певна цифра.  Рис. 1. Кодування семисегментного індикатора зі спільним анодом Для компактного для очей режиму спостереження за виводом значень на семисегментний дисплей частота блимання для кожного семисегментного елемента повинна бути в діапазоні не менше 60-70 Гц. Для шести наших елементів частота повинна бути в районі 400 Гц. Завдання до лабораторної роботи На основі мікроконтролера ATmega32A зібрати у пакеті симуляції Proteus схему таймера зворотного відліку та написати програму мовою Ci для реалізації алгоритму роботи пристрою: Таймер зворотного відліку. Реалізувати 2 таймери, що працюють незалежно один від одного. Перемикання між таймерами виконується кнопкою. Відображаються години, хвилини, секунди. Відлік здійснюється у зворотному порядку, від встановленого значення до нуля. При досягненні значення нуль запускається звуковий сигнал (короткими гудками) тривалістю 0,5-1 хв. Кнопка 1 – виставляє значення годин. Кнопка 2 – виставляє значення хвилин. Кнопка 3 – переключає між собою таймери. Кнопка 4 – запускає на виконання відображуваний таймер або (якщо він вже запущений) скидає його значення в нуль та деактивує.    Рис. 2. Принципова схема пристрою, що зібрана у пакеті Proteus Код програми пристрою мовою Сі #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> #include <util/delay.h> typedef struct{ // Масив змінних для зміни часу int second[2]; unsigned char minute[2]; unsigned char hour[2]; }time; time t; unsigned char number[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc8,0x8e}; unsigned char a[6],c[6],flag[2]; volatile unsigned char b=0b00000001,d=0b00000001,count=0,count1=0,count3=0,count4=0,i=0; volatile unsigned short count2=0; signed char nomer1=5,nomer2=5; int main(void) { DDRD =0b00111111; DDRB =0xff; // Порт B на вихід з високим початковим рівнем PORTB=0xff; DDRC =0xff; // Порт C на вихід з низьким початковим рівнем PORTC=0x00; DDRA =0x00; // Порт A на вхід з підтягуючим резистором PORTA=0xff; TCCR1B |=(1<<WGM12)|(1<<CS12); // Таймер 1 по співпад, 360Hz(2.77778ms), Prescaler=256, OCR=0x0077 OCR1AH = 0x00; // Спочатку старший біт OCR1AL = 0x77; TCCR0 |=(1<<WGM01)|(1<<CS02)|(1<<CS00); // Таймер 0 по співпадінню, 20msec, Prescaler=1024, OCR=0xD7 OCR0=0xD7; TIMSK |=( _BV(OCIE0)|_BV(OCIE1A));// дозвіл на переривання по співпадінню T0 та T1 sei(); // Дозвіл на глобальне переривання while(1) // Основна програма { if(PINA==0b11111011) // Виставлення годин(кнопка 1) { t.hour[i]++; _delay_ms(500); if(t.hour[i]>23) {t.hour[i]=0;} } if(PINA==0b111...
Антиботан аватар за замовчуванням

12.04.2016 16:04

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини